6272. Школьная олимпиада

 

На школьной олимпиаде по программированию участникам было предложено целых две задачи. a учеников полностью справилась с предложенными заданиями, а b учеников не смогли сдать ни одного.

Сколько всего было участников олимпиады, если верных решений по первой задаче было принято c, а по второй – d.

 

Вход. Целые неотрицательные числа a, bc и d, не превышающие 100.

 

Выход. Выведите количество участников олимпиады.

 

Пример входа

Пример выхода

1 2 3 4

8

 

 

РЕШЕНИЕ

комбинаторика

 

Анализ алгоритма

Пусть X – множество учеников, решивших первую задачу.

Пусть Y – множество учеников, решивших вторую задачу.

Количество детей, решивших обе задачи, равно |X ∩ Y| = a.

Тогда количество детей, решивших хотя бы одну задачу, равно

|X| + |Y| – |X ∩ Y| = c + da

Добавим к этому значению число детей, не решивших ни одной задачи, получим количество детей в классе: c + da + b.

 

Реализация алгоритма

Читаем входные данные.

 

scanf("%d %d %d %d", &a, &b, &c, &d);

 

Вычисляем и выводим ответ.

 

res = c + d - a + b;

printf("%d\n", res);